package xyz.xtt.exchange.client;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;

import xyz.xtt.common.response.ApiResult;
import xyz.xtt.exchange.request.CopyrightRequest;
import xyz.xtt.exchange.response.AssetAuditResponse;

@FeignClient(name = "nft-exchange", fallbackFactory = ExchangeClientFallbackFactory.class)
public interface ExchangeClient {
//	/**
//	 * 获取售卖中的权益包
//	 *
//	 * @param request 请参数
//	 * @return 售卖中的权益包
//	 */
//	@PostMapping("/api/exchange/vip/getOnSaleBenefitPackage")
//	ApiResult<TblBenefitPackageDto> getOnSaleBenefitPackage(@RequestBody @Valid GetOnSaleBenefitPackageRequest request);
//
//	/**
//	 * 获取未支付的权益购买记录
//	 *
//	 * @param request 请求参数
//	 * @return 未支付的权益购买记录
//	 */
//	@PostMapping("/api/exchange/vip/getUnPayBenefitPurchaseRecord")
//	ApiResult<TblBenefitPurchaseRecordDto> getUnPayBenefitPurchaseRecord(@RequestHeader("uid") Long uid,
//			@RequestBody @Valid GetUnPayBenefitPurchaseRecordRequest request);
//
//	/**
//	 * 保存权益包未支付记录
//	 *
//	 * @param uid
//	 * @param saveDto
//	 * @return
//	 */
//	@PostMapping("/api/exchange/vip/saveUnPayBenefitPurchaseRecord")
//	ApiResult<Long> saveUnPayBenefitPurchase(@RequestHeader("uid") Long uid, @RequestBody @Valid SaveBenefitPurchaseUnPayDto saveDto);
//
//	/**
//	 * 查询权益包支付记录
//	 * 
//	 * @param uid
//	 * @param request
//	 * @return
//	 */
//	@PostMapping("/api/exchange/vip/getBenefitPurchaseRecord")
//	ApiResult<TblBenefitPurchaseRecordDto> getBenefitPurchaseRecord(@RequestHeader("uid") Long uid,
//			@RequestBody @Valid GetBenefitPurchaseRecordRequest request);
//
//	/**
//	 * 支付成功处理
//	 * 
//	 * @param uid
//	 * @param request
//	 * @return
//	 */
//	@PostMapping("/api/exchange/vip/handlePaySuccess")
//	ApiResult<Boolean> handlePaySuccess(@RequestHeader("uid") Long uid, @RequestBody @Valid HandlePaySuccessRequest request);
//
//	/**
//	 * 支付取消处理
//	 * 
//	 * @param uid
//	 * @param request
//	 * @return
//	 */
//	@PostMapping("/api/exchange/vip/handlePayCancel")
//	ApiResult<Boolean> handlePayCancel(@RequestHeader("uid") Long uid, @RequestBody @Valid HandlePayCancelRequest request);
//
//	/**
//	 * 查询资产铸造审核记录
//	 * 
//	 * @param uid
//	 * @param auditId
//	 * @return
//	 */
//	@GetMapping("/api/exchange/asset/getAuditRecord")
//	ApiResult<AssetAuditDto> getAuditRecord(@RequestHeader("uid") Long uid, @RequestParam("auditId") Long auditId);
//
//	/**
//	 * 获取铸造分段计价规则
//	 * 
//	 * @return
//	 */
//	@GetMapping("/api/exchange/asset/getMintPriceConfig")
//	ApiResult<String> getPersonalMintPriceConfig();
//
//	/**
//	 * 计算个人铸造价格
//	 * 
//	 * @param mintNum
//	 * @return
//	 */
//	@GetMapping("/api/exchange/asset/calMintPrice")
//	ApiResult<String> calculatePersonalMintPrice(@RequestParam("mintNum") Integer mintNum);
//
//	/**
//	 * 获取3日内VIP将要过期的用户权益记录集合
//	 * 
//	 * @param pageNo
//	 * @param pageSize
//	 * @param benefitCode
//	 * @return
//	 */
//	@GetMapping("/api/exchange/benefit/expiring")
//	ApiResult<List<TblUserBenefitDto>> getExpiringUserBenefits(@RequestParam("pageNo") @Positive int pageNo,
//			@RequestParam("pageSize") @Positive @Max(100) int pageSize, @RequestParam("benefitCode") String benefitCode);
//
//	/**
//	 * 查询用户最新一条权益记录
//	 * 
//	 * @param uid
//	 * @param benefitCode
//	 * @return
//	 */
//	@GetMapping("/api/exchange/benefit/latest")
//	ApiResult<TblUserBenefitDto> getLatestUserBenefit(@RequestHeader("uid") String uid, @RequestParam("benefitCode") String benefitCode);
//
//	/**
//	 * 获取资产最新配置及其日志记录
//	 * 
//	 * @param assetId
//	 * @return
//	 */
//	@GetMapping("/api/exchange/asset/getAssetExpand")
//	ApiResult<TblAssetExpandDto> getAssetExpand(@RequestParam("assetId") @NotNull Long assetId);
//
//	/**
//	 * 赠送免费权益包
//	 * 
//	 * @param request
//	 * @return
//	 */
//	@PostMapping("/api/exchange/benefit/sendFreeBenefitPackage")
//	ApiResult<Boolean> sendFreeBenefitPackage(@RequestBody @Valid SendFreeBenefitPackageRequest request);
//
//	@GetMapping("/api/exchange/interest/nftDetails")
//	ApiResult<TblAssetExpandDto> nftDetails(@RequestParam("uid") @NotNull Long uid, @RequestParam("goodsId") @NotNull String goodsId);
//
//	@PostMapping("/pk/Operator")
//	ApiResult<String> createOperator(@RequestParam("operateUserId") String operateUserId, @RequestParam("goodsId") String goodsId);
//
//	@DeleteMapping("/pk/Operator")
//	ApiResult<String> deleteOperator(@RequestParam("id") String id);
//
//	@GetMapping("/pk/operatorList")
//	ApiResult<List<TblMissAsiaPkOperatorResponse>> listOperator();

	/**
	 * 审核记录详情
	 * 
	 * @param assetAuditId
	 * @return
	 */
	@GetMapping("/api/nft/exchange/assetAuditInfo")
	ApiResult<AssetAuditResponse> assetAuditInfo(@RequestParam("assetAuditId") Long assetAuditId);

	@PostMapping("/api/nft/exchange/assetAuditPayMint")
	ApiResult<Boolean> assetAuditPayMint(@RequestParam("assetAuditId") Long assetAuditId, @RequestParam("assetId") Long assetId);

	@GetMapping("/api/exchange/merchant/judgeMerchantPer")
	ApiResult<Boolean> judgeMerchantPer(@RequestHeader("uid") String uid);

	@PostMapping("/api/nft/exchange/saveCopyright")
	ApiResult<Boolean> saveCopyright(@RequestBody CopyrightRequest copyrightRequest);
}
